<?php

/** 
 * @author felipe
 * 
 * 
 */
class App_Model_Db_Fornecedor extends Voitech_Db{
	protected $_name = 'fornecedor';
	protected $_primary = 'co_fornecedor';
	
	static private $instancia;

	/**
	 * @return App_Model_Db_Fornecedor
	 */
	static public function build() {
            if( !isset( self::$instancia ) ) {
                    $classe = __CLASS__;
                    self::$instancia = new $classe();
            }
            return self::$instancia;
	}
        
        public function buscarId($co_fornecedor) {            
            $obSelect = $this->getAdapter()->select()
                                           ->from(array('fornecedor'=>'fornecedor'))
                                           ->joinLeft(array('pessoa'=>'pessoa')
                                                      ,'fornecedor.co_representante = pessoa.co_pessoa'
                                                      ,array('no_representante'=>'no_pessoa'))
                                            ->where('fornecedor.co_fornecedor =?',$co_fornecedor);
            return $this->getAdapter()->fetchRow($obSelect);
        }
	
	public function listarTodos(Voitech_TO $obTO=null){
            $obSelect = $this->getAdapter()->select()
                                           ->from(array('fornecedor'=>'fornecedor'),
                                           		  array('*',
			                          				    'excluir' => '(CASE 
																		    WHEN (SELECT count(*) FROM compra WHERE fornecedor.co_fornecedor = compra.co_fornecedor)> 0 THEN
																		    	\'N\'
																		     ELSE
																		    	\'S\'
																		    END)'))
                                           ->joinLeft(array('pessoa'=>'pessoa')
                                                      ,'fornecedor.co_representante = pessoa.co_pessoa'
                                                      ,array('no_representante'=>'no_pessoa'));

            if( !empty( $obTO->co_fornecedor ) ) {
                    $obSelect->where('fornecedor.co_fornecedor =?', $obTO->co_fornecedor);
            }
            if( !empty( $obTO->no_fornecedor ) ) {
                    $obSelect->where('fornecedor.no_fornecedor like ?', "%".$obTO->no_fornecedor."%");
            }
            if( !empty( $obTO->nu_cnpj ) ) {
                    $obSelect->where('fornecedor.nu_cnpj =?', $obTO->nu_cnpj);
            }
            if( !empty( $obTO->st_ativo ) ) {
                    $obSelect->where('fornecedor.st_ativo =?', $obTO->st_ativo);
            }
            $obSelect->order('fornecedor.no_fornecedor');
            return $this->getAdapter()->fetchAll($obSelect);			   						   
	}
}